package com.sf.zhimengjing.entity.admin;

import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.sf.zhimengjing.entity.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDateTime;

/**
 * @Title: CommunityPost
 * @Author: 殇枫
 * @Package: com.sf.zhimengjing.entity.admin
 * @Description: 社区帖子实体类，存储社区帖子的详细信息
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("community_posts")
@Schema(description = "社区帖子实体")
public class CommunityPost extends BaseEntity {

    /** 用户ID */
    @Schema(description = "用户ID")
    private Long userId;

    /** 帖子标题 */
    @Schema(description = "帖子标题")
    private String title;

    /** 帖子内容 */
    @Schema(description = "帖子内容")
    private String content;

    /** 纯文本内容（用于搜索） */
    @Schema(description = "纯文本内容（用于搜索）")
    private String contentText;

    /** 图片URL列表（JSON格式） */
    @Schema(description = "图片URL列表（JSON格式）")
    private String images;

    /** 标签列表（JSON格式） */
    @Schema(description = "标签列表（JSON格式）")
    private String tags;

    /** 分类ID */
    @Schema(description = "分类ID")
    private Integer categoryId;

    /** 查看次数 */
    @Schema(description = "查看次数")
    private Integer viewCount;

    /** 点赞数 */
    @Schema(description = "点赞数")
    private Integer likeCount;

    /** 评论数 */
    @Schema(description = "评论数")
    private Integer commentCount;

    /** 分享数 */
    @Schema(description = "分享数")
    private Integer shareCount;

    /** 收藏数 */
    @Schema(description = "收藏数")
    private Integer collectCount;

    /** 是否置顶:0-否,1-是 */
    @Schema(description = "是否置顶:0-否,1-是")
    private Integer isTop;

    /** 是否热门:0-否,1-是 */
    @Schema(description = "是否热门:0-否,1-是")
    private Integer isHot;

    /** 是否匿名:0-否,1-是 */
    @Schema(description = "是否匿名:0-否,1-是")
    private Integer isAnonymous;

    /** 状态：0-待审核，1-已通过，2-已拒绝，3-已删除 */
    @Schema(description = "状态:0-待审核,1-已通过,2-已拒绝,3-已删除")
    private Integer status;

    /** 拒绝原因 */
    @Schema(description = "拒绝原因")
    private String rejectReason;

    /** 管理员备注 */
    @Schema(description = "管理员备注")
    private String adminRemark;

    /** 发布时间 */
    @Schema(description = "发布时间")
    private LocalDateTime publishedAt;

    /** 最后评论时间 */
    @Schema(description = "最后评论时间")
    private LocalDateTime lastCommentedAt;

    /** 逻辑删除标识 (0: 未删除, 1: 已删除) */
    @TableLogic
    @Schema(description = "逻辑删除标识 (0: 未删除, 1: 已删除)")
    private Integer deleted;
}